package cn.ware.house.interfaces.entity.goods;

import java.util.List;

/**
 * 商品分类实体类，对应数据库中的`product_category`表，用于封装商品分类相关的信息。
 * 该类中的各个属性与数据库表中的字段一一对应，方便进行数据的持久化操作以及业务逻辑处理。
 */

public class ProductCategory {
    // 默认构造函数
    public ProductCategory() {
    }
    // 添加接受整数参数的构造函数

    public ProductCategory(int id) {
        this.id = id;
    }
    /**
     * 商品分类编号，自增长的唯一标识，对应数据库表中的`category_id`字段。
     * 在数据库中作为自增长的整数类型，是每条商品分类记录的唯一标识符，便于数据库层面的操作及关联查询等。
     */
    private Integer id;
    /**
     * 商品分类名称，比如食品、日用品等分类称呼，对应数据库表中的`category_name`字段。
     * 是一个长度不超过30个字符的字符串，用于直观表示商品分类的名称。
     */
    private String categoryName;
    /**
     * 分类描述，对该分类进行更详细的解释说明，对应数据库表中的`description`字段。
     * 长度不超过100个字符的字符串，提供关于该分类更丰富的信息。
     */
    private String description;


    public Integer getId() {
        return id;
    }
    private Integer parentId; // 新增父分类编号字段，用于表示当前分类所属的父分类

    // 用于存储子分类列表，方便构建树形结构（在查询相关操作时使用）
    private List<ProductCategory> children;

    public Integer getParentId() {
        return parentId;
    }

    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }

    public List<ProductCategory> getChildren() {
        return children;
    }

    public void setChildren(List<ProductCategory> children) {
        this.children = children;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getCategoryName() {
        return categoryName;
    }

    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Override
    public String toString() {
        return "ProductCategory{" +
                "id=" + id +
                ", categoryName='" + categoryName + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}